import org.apache.spark.{SparkConf, SparkContext}

// 在Scala编程语言中，class和object是两个基本的构建块，它们在定义和实例化对象时扮演着不同的角色。
// class是一个蓝图，用于创建具体的对象实例，它定义了对象的属性和行为。
// 而object在Scala中用于实现单例模式，它本身就是一个实例，通常用于存放静态成员和静态方法。
object TransGroupBy {

  def test2(sc: SparkContext): Unit = {
    val rdd = sc.parallelize(1 to 30)
    var rdd1 = rdd.groupBy(_%4)
    rdd1.foreach(a=>println(a._1, "the result is ", a._2))
    // (0,CompactBuffer(4, 8, 12, 16, 20, 24, 28))
    // (1,CompactBuffer(1, 5, 9, 13, 17, 21, 25, 29))
    // (3,CompactBuffer(3, 7, 11, 15, 19, 23, 27))
    // (2,CompactBuffer(2, 6, 10, 14, 18, 22, 26, 30))
  }
  
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("TransGroupBy").setMaster("local[*]")
    val sc = new SparkContext(conf)
    test2(sc)
    sc.stop()
  }
}

// 直接运行
// cd D:\github\spark-scala-tutorial\xxxxxxxxx
// sbt run
// 或者打包后运行
// sbt package
// spark-submit --class XxxxxXxxx D:\github\spark-scala-tutorial\xxxxxxxxx\target\scala-2.12\xxxxxxxxxxxxxxxxxxx.jar